<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="XunUK" id="XunUK"><span data-lake-id="uf6114493" id="uf6114493">典型回答</span></h1>
  <p data-lake-id="u7a4106e0" id="u7a4106e0"><span data-lake-id="u21e8fafb" id="u21e8fafb">​</span><br></p>
  <p data-lake-id="u150d4c34" id="u150d4c34"><span data-lake-id="u32d28dcd" id="u32d28dcd">BIO （Blocking I/O）：</span><strong><span data-lake-id="ud1a749f3" id="ud1a749f3">同步阻塞I/O</span></strong><span data-lake-id="uc8c3e632" id="uc8c3e632">，是JDK1.4之前的传统IO模型。 线程发起IO请求后，一直阻塞，直到缓冲区数据就绪后，再进入下一步操作。</span></p>
  <p data-lake-id="u325310e5" id="u325310e5"><span data-lake-id="u5171c51f" id="u5171c51f">​</span><br></p>
  <p data-lake-id="u4f95fae5" id="u4f95fae5"><span data-lake-id="u7da6dc58" id="u7da6dc58">NIO （</span><span data-lake-id="u04138a87" id="u04138a87" class="lake-fontsize-12" style="color: rgb(37, 41, 51)">Non-Blocking</span><span data-lake-id="u2c8e324a" id="u2c8e324a"> I/O）：</span><strong><span data-lake-id="uebb799d0" id="uebb799d0">同步非阻塞IO</span></strong><span data-lake-id="u6e3f76a5" id="u6e3f76a5">，线程发起IO请求后，不需要阻塞，立即返回。用户线程不原地等待IO缓冲区，可以先做一些其他操作，只需要定时轮询检查IO缓冲区数据是否就绪即可。</span></p>
  <p data-lake-id="u71caaf10" id="u71caaf10"><span data-lake-id="u4cb0ccea" id="u4cb0ccea">​</span><br></p>
  <p data-lake-id="udfcc5636" id="udfcc5636"><span data-lake-id="u55680c89" id="u55680c89">AIO （ Asynchronous I/O）：</span><strong><span data-lake-id="ub666fecc" id="ub666fecc">异步非阻塞I/O模型</span></strong><span data-lake-id="u1af3f158" id="u1af3f158">。线程发起IO请求后，不需要阻塞，立即返回，也不需要定时轮询检查结果，异步IO操作之后会回调通知调用方。</span></p>
  <p data-lake-id="ua7ebcbfb" id="ua7ebcbfb"><span data-lake-id="u7819c8e4" id="u7819c8e4">​</span><br></p>
  <p data-lake-id="u9bed53e6" id="u9bed53e6"><img src="https://cdn.nlark.com/yuque/0/2024/png/5378072/1705133708567-49955e01-446a-4fef-b441-4356180eac5c.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_22%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="u977052d0" id="u977052d0"><span data-lake-id="ub2258eca" id="ub2258eca">​</span><br></p>
  <h1 data-lake-id="tyOCM" id="tyOCM"><span data-lake-id="ue0b5c7ea" id="ue0b5c7ea">知识扩展</span></h1>
  <h2 data-lake-id="byi2D" id="byi2D"><span data-lake-id="u1e80ae48" id="u1e80ae48" style="color: var(--yq-text-primary)">Java中BIO、NIO、AIO分别适用哪些场景？</span></h2>
  <p data-lake-id="u903e74d3" id="u903e74d3"><span data-lake-id="u510dad56" id="u510dad56">BIO方式适用于连接数目比较小且固定的架构，这种方式对服务器资源要求比较高，并发局限于应用中，JDK1.4以前的唯一选择，但程序直观简单易理解。</span></p>
  <p data-lake-id="u19794fb7" id="u19794fb7"><span data-lake-id="u278b733e" id="u278b733e">​</span><br></p>
  <p data-lake-id="uf5a4b0ff" id="uf5a4b0ff"><span data-lake-id="u344f4a98" id="u344f4a98">NIO方式适用于连接数目多且连接比较短（轻操作）的架构，比如聊天服务器，并发局限于应用中，编程比较复杂，JDK1.4开始支持。</span></p>
  <p data-lake-id="u53bb6880" id="u53bb6880"><span data-lake-id="ua18dd483" id="ua18dd483">​</span><br></p>
  <p data-lake-id="u5249b6be" id="u5249b6be"><span data-lake-id="u4f8d8953" id="u4f8d8953">AIO方式适用于连接数目多且连接比较长（重操作）的架构，比如相册服务器，充分调用OS参与并发操作，编程比较复杂，JDK7开始支持。</span></p>
  <h2 data-lake-id="yV1me" id="yV1me"><span data-lake-id="ue8b08851" id="ue8b08851">同步，异步，阻塞，非阻塞的区别</span></h2>
  <p data-lake-id="ud6aa2799" id="ud6aa2799"><span data-lake-id="u9b9a045f" id="u9b9a045f">​</span><br></p>
  <h2 data-lake-id="DjU5m" id="DjU5m"><span data-lake-id="uc8ff8a9e" id="uc8ff8a9e">操作系统的IO模型有哪五种？</span></h2>
  <p data-lake-id="u3eecacab" id="u3eecacab"><br></p>
 </body>
</html>